package com.yan.design.one.principle1.o5;

/**
 * 设计模式 ： 7大原则
 *      5. 开闭原则
 *           实体如类，模块函数对扩展开放（提供方）最修改关闭（使用）
 * @author shengren.yan
 * @create 2022-07-09
 */
public class principle5 {

    public static void main(String[] args) {
        GrapEditor g = new GrapEditor();
        g.drawShape(new A());
        g.drawShape(new B());
        g.drawShape(new C());
    }

    static class GrapEditor{
        public void drawShape(Shape s){
//            if(s.type==1){
//                // 执行一些方法
//            }
            s.draw();
        }
    }
    // 抽象类
    static abstract class Shape{
        int type;
        public abstract void draw();
   }

    static class A extends Shape{
//        A(){
//            super.type=1;
//        }
       @Override
       public void draw() {
           System.out.println("A（）执行");
       }
   }

    static class B extends Shape{
        @Override
        public void draw() {
            System.out.println("B（）执行");
        }
    }
    static class C extends Shape{
        @Override
        public void draw() {
            System.out.println("C（）执行");
        }
    }


}
